package com.ruoyi.safe.mapper;

import com.github.pagehelper.Page;
import com.ruoyi.safe.domain.BizExcludePlan;
import com.ruoyi.safe.domain.BizExcludeRegion;
import com.ruoyi.safe.domain.BizExcludeUser;
import com.ruoyi.safe.domain.dto.BizExcludePlanDTO;
import com.ruoyi.safe.domain.dto.BizExcludePlanTaskDTO;
import com.ruoyi.safe.domain.vo.BizExcludePlanVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 隐患风险排查计划Mapper接口
 *
 * @author buxi
 * @date 2023-11-16
 */
@Mapper
public interface BizExcludePlanMapper {
    /**
     * 查询隐患风险排查计划
     *
     * @param id 隐患风险排查计划主键
     * @return 隐患风险排查计划
     */
    BizExcludePlan selectBizExcludePlanById(Long id);

    /**
     * 查询隐患风险排查计划列表
     *
     * @param bizExcludePlan 隐患风险排查计划
     * @return 隐患风险排查计划集合
     */
    List<BizExcludePlan> selectBizExcludePlanList(BizExcludePlan bizExcludePlan);

    /**
     * 查询隐患风险排查计划列表VO
     *
     * @param bizExcludePlan 隐患风险排查计划
     * @return 隐患风险排查计划集合
     */
    List<BizExcludePlanVO> selectBizExcludePlanListVO(BizExcludePlanDTO bizExcludePlan);

    /**
     * 批量新增隐患风险排查计划
     * @return 结果
     */
    int insertBizExcludePlanBatch(List<BizExcludePlan> bizExcludePlanList);

    /**
     * 修改隐患风险排查计划
     *
     * @param bizExcludePlan 隐患风险排查计划
     * @return 结果
     */
    int updateBizExcludePlan(BizExcludePlan bizExcludePlan);

    /**
     * 删除隐患风险排查计划
     *
     * @param id 隐患风险排查计划主键
     * @return 结果
     */
    int deleteBizExcludePlanById(Long id);

    /**
     * 批量删除隐患风险排查计划
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteBizExcludePlanByIds(Long[] ids);

    /**
     * 批量删除隐患风险排查计划人员主子
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteBizExcludeUserByExcludePlanIds(Long[] ids);

    /**
     * 批量删除隐患风险排查计划区域主子
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteBizExcludeRegionByExcludePlanIds(Long[] ids);

    /**
     * 批量新增隐患风险排查计划人员主子
     *
     * @param bizExcludeUserList 隐患风险排查计划人员主子列表
     * @return 结果
     */
    int batchBizExcludeUser(List<BizExcludeUser> bizExcludeUserList);
    /**
     * 批量新增隐患风险排查计划人员主子
     *
     * @param bizExcludeRegionList 隐患风险排查计划人员主子列表
     * @return 结果
     */
    int batchBizExcludeRegion(List<BizExcludeRegion> bizExcludeRegionList);


    /**
     * 通过隐患风险排查计划主键删除隐患风险排查计划人员主子信息
     *
     * @param id 隐患风险排查计划ID
     * @return 结果
     */
    int deleteBizExcludeUserByExcludePlanId(Long id);
    int deleteBizExcludeRegionByExcludePlanId(Long id);

    int updateBatchByIds(BizExcludePlan bizExcludePlan);

    /**
     * 查询可生成任务的隐患风险排查计划列表
     *
     * @param bizExcludePlanTaskDTO 隐患风险排查计划
     * @return 隐患风险排查计划集合
     */
    List<BizExcludePlanVO> selectBizExcludePlanListVOList(BizExcludePlanTaskDTO bizExcludePlanTaskDTO);

    Page<BizExcludePlanVO> selectBizExcludePlanListVOList2(BizExcludePlanTaskDTO bizExcludePlanTaskDTO);

    List<BizExcludeUser> selectBizExcludeUserList(List<Long> ids);

    List<BizExcludeRegion> selectBizExcludeRegionList(List<Long> ids);

    /**
     * 查询隐患风险排查计划
     *
     * @param ids 隐患风险排查计划主键
     * @return 隐患风险排查计划
     */
    List<BizExcludePlan> selectBizExcludePlanByIds(List<Long> ids);

    /**
     * 批量修改是否可以生成任务
     */
    int updateIsTaskByIds(List<BizExcludePlan> bizExcludePlanList);

    int insertPlan(BizExcludePlan bizExcludePlan);
}
